CREATE PROCEDURE [dbo].[amsp_CMFinalizePublish]
@InPublishRequestDetailID int,
@InPublishedDateTime datetime,
@InContactID numeric
AS
BEGIN
DECLARE
@ContentID numeric,
@NavMenuID numeric,
@PreviousContentID numeric,
@HTMLContentID numeric,
@NavContentGroupInd char(1),
@ParentNavMenuID numeric,
@DefaultContentID numeric,
@FilePath varchar(255),
@FileName varchar(255),
@WorkflowStatusCode char(1),
@PublicationDate datetime,
@DestDirectory varchar(255),
@NewPreFuseURL varchar(255),
@NewPostFuseURL varchar(255),
@OldPreFuseURL varchar(255),
@OldPostFuseURL varchar(255),
@NewNavMenuPreFuseURL varchar(255),
@NewNavMenuPostFuseURL varchar(255),
@OldNavMenuPreFuseURL varchar(255),
@OldNavMenuPostFuseURL varchar(255),
@ExpirationDate datetime,
@CMResetAllContentExpDate varchar(10),
@ExpirationDays integer,
@NavWorkflowStatusCode char(1),
@ContentCount int,
@PublishRegenerateInd char(1),
@PublishRequestID int,
@PublishedDirectory varchar(255),
@PublishDirectory varchar(255),
@NewDefaultContentID numeric,
@RequestPublishedDateTime datetime,
@RequestNavMenuID numeric,
@WebsiteKey uniqueidentifier
SELECT @ContentID = a.ContentID,
@PreviousContentID = a.PreviousContentID,
@HTMLContentID = b.ContentID,
@OldPreFuseURL = a.PreFuseURL,
@OldPostFuseURL = a.PostFuseURL,
@WorkflowStatusCode = a.WorkflowStatusCode,
@PublicationDate = a.PublicationDate,
@ExpirationDate = a.ExpirationDate,
@ExpirationDays = a.ExpirationDays,
@NavContentGroupInd = c.NavContentGroupInd,
@FilePath = c.FilePath,
@NavMenuID = c.NavMenuID,
@ParentNavMenuID = c.ParentNavMenuID,
@DefaultContentID = c.ContentID,
@OldNavMenuPreFuseURL = c.PreFuseURL,
@OldNavMenuPostFuseURL = c.PostFuseURL,
@NavWorkflowStatusCode = c.WorkflowStatusCode,
@PublishRegenerateInd = d.PublishRegenerateInd,
@PublishRequestID = d.PublishRequestID,
@PublishedDirectory = c.PublishedDirectory,
@PublishDirectory = Replace(CASE WHEN c.NavContentGroupInd = 'N' THEN IsNull(e.NavPublishDirectory,'')
ELSE IsNull(e.ContentFolderPublishDirectory,'') END
+ c.FilePath,'\','/'),
@WebsiteKey = e.WebsiteKey,
@RequestPublishedDateTime = f.PublishedDateTime,
@RequestNavMenuID = f.NavMenuID
FROM Content a WITH (NOLOCK) LEFT OUTER JOIN Content_HTML b WITH (NOLOCK)
ON a.ContentID = b.ContentID, Nav_Menu c WITH (NOLOCK), Publish_Request_Detail d WITH (NOLOCK),
Website e WITH (NOLOCK), Publish_Request f WITH (NOLOCK)
WHERE a.NavMenuID = c.NavMenuID
AND a.ContentID = d.ContentID
AND c.WebsiteKey = e.WebsiteKey
AND d.PublishRequestDetailID = @InPublishRequestDetailID
AND d.PublishRequestID = f.PublishRequestID
IF @RequestPublishedDateTime IS NULL BEGIN
UPDATE Publish_Request
SET PublishedDateTime = @InPublishedDateTime
WHERE PublishRequestID = @PublishRequestID
END
IF @WorkflowStatusCode = 'A' OR @WorkflowStatusCode = 'P' BEGIN
SELECT @CMResetAllContentExpDate = Value
FROM System_Variable
WHERE Name = 'CMResetAllContentExpDate'
IF @PreviousContentID IS NOT NULL AND @WorkflowStatusCode = 'A' BEGIN
UPDATE Content
SET WorkflowStatusCode = 'R'
WHERE ContentID = @PreviousContentID
INSERT INTO Content_Workflow_Log (
ContentID,
WorkflowStatusCode,
ContactID,
ChangeDateTime)
VALUES (
@PreviousContentID,
'R',
@InContactID,
CURRENT_TIMESTAMP)
END
IF (@WorkflowStatusCode = 'A' OR UPPER(@CMResetAllContentExpDate) = 'TRUE') AND @ExpirationDays IS NOT NULL AND @ExpirationDays > 0
SET @ExpirationDate = DateAdd(dd,@ExpirationDays,CURRENT_TIMESTAMP)
ELSE IF (@WorkflowStatusCode = 'A' OR UPPER(@CMResetAllContentExpDate) = 'TRUE')
AND (@ExpirationDays IS NULL OR @ExpirationDays = 0)
SET @ExpirationDate = NULL
IF @PublicationDate IS NULL
SET @PublicationDate = @InPublishedDateTime
UPDATE Content
SET WorkflowStatusCode = 'P',
PublishDateTime = @InPublishedDateTime,
ReminderSentDateTime = NULL,
ExpirationDate = @ExpirationDate,
PublicationDate = @PublicationDate,
ContactID = @InContactID
WHERE ContentID = @ContentID
INSERT INTO Content_Workflow_Log (ContentID,
WorkflowStatusCode,
ContactID,
ChangeDateTime)
VALUES (@ContentID,
'P',
@InContactID,
CURRENT_TIMESTAMP)
EXECUTE amsp_CMGetFuseURL @NavMenuID, @ContentID, @NewPreFuseURL OUTPUT, @NewPostFuseURL OUTPUT
IF IsNull(@NewPreFuseURL,'') <> IsNull(@OldPreFuseURL,'')
OR IsNull(@NewPostFuseURL,'') <> IsNull(@OldPostFuseURL,'') BEGIN
UPDATE Content
SET PostFuseURL = @NewPostFuseURL
WHERE ContentID = @ContentID
END
IF @PreviousContentID = @DefaultContentID BEGIN
SET @DefaultContentID = @ContentID
UPDATE Nav_Menu
SET ContentID = @ContentID
WHERE NavMenuID = @NavMenuID
END
END
ELSE IF @WorkflowStatusCode = 'D' BEGIN
UPDATE Content
SET WorkflowStatusCode = 'Y',
NavMenuID = CASE WHEN @NavWorkflowStatusCode = 'D' THEN (SELECT NavMenuID FROM Nav_Menu WHERE Name = 'Content_Recycle_Bin')
ELSE NavMenuID END
WHERE ContentID = @ContentID
INSERT
INTO Content_Workflow_Log (
ContentID,
WorkflowStatusCode,
ContactID,
ChangeDateTime)
VALUES (@ContentID,
'Y',
@InContactID,
CURRENT_TIMESTAMP)
END
IF @NavWorkflowStatusCode = 'D' BEGIN
SELECT @ContentCount = Count(*)
FROM Content
WHERE NavMenuID = @NavMenuID
IF @ContentCount = 0 BEGIN
EXECUTE amsp_CMRequestPublish @NavMenuID, NULL, @InContactID, 'N', 'Y', 'R', DEFAULT, @PublishRequestID, NULL
UPDATE Publish_Request
SET NavMenuID = NULL
WHERE NavMenuID = @NavMenuID
DELETE FROM Nav_Menu_Workflow_Log WHERE NavMenuID = @NavMenuID
DELETE FROM Nav_Menu_Feature WHERE NavMenuID = @NavMenuID
DELETE FROM Nav_Menu_Security_Group WHERE NavMenuID = @NavMenuID
DELETE FROM Nav_Menu WHERE NavMenuID = @NavMenuID
END
END
ELSE IF @DefaultContentID = @ContentID BEGIN
EXECUTE amsp_CMGetFuseURL @NavMenuID, NULL, @NewNavMenuPreFuseURL OUTPUT, @NewNavMenuPostFuseURL OUTPUT
IF IsNull(@NewNavMenuPreFuseURL,'') <> IsNull(@OldNavMenuPreFuseURL,'')
OR IsNull(@NewNavMenuPostFuseURL,'') <> IsNull(@OldNavMenuPostFuseURL,'') BEGIN
UPDATE Nav_Menu
SET PreFuseURL = @NewNavMenuPreFuseURL,
PostFuseURL = @NewNavMenuPostFuseURL
WHERE NavMenuID = @NavMenuID
END
IF IsNull(@PublishedDirectory,'') <> @PublishDirectory
UPDATE Nav_Menu
SET PublishedDirectory = @PublishDirectory
WHERE NavMenuID = @NavMenuID
IF @PublishRegenerateInd = 'P' AND @NavContentGroupInd = 'N'
EXECUTE amsp_CMRequestPublish @NavMenuID, NULL, @InContactID, 'N', 'Y', 'R', DEFAULT, @PublishRequestID, NULL
END
END
GO